/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CONTROLLER;

import DAO.DaoItensVenda;
import DAO.DaoVenda;
import MODEL.ItensVenda;
import MODEL.Mesa;
import MODEL.Relogio;
import VIEW.ProjetoFinal;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.text.Text;
import javafx.util.Callback;

/**
 *
 * @author MatheuseJessica
 */
public class CozinhaController implements Initializable{
    @FXML
    Text tx_data, tx_hora;
    @FXML
    TableColumn col_produto, col_quantia, col_mesa, col_horario, col_demora, col_finalizar;
    @FXML
    TableView tb_listaPedidos;
    @FXML
    Button bt_voltar;
    @FXML
    Label lb_aberto;
    public static Thread relogio;
    public static final ObservableList op = FXCollections.observableArrayList();
    
    public CozinhaController(){
        
    }
    
     public void ListaCozinha (ActionEvent ev) {
         
     }
     
     @FXML
    public void cadastraProdutos(ActionEvent event){
        ProjetoFinal.getInstance().gotoCadastraProdutos();
            System.out.println("OK");
        
            //System.out.println("Erro");
        
    }
    
    @FXML
    public void cadastraFuncionario(ActionEvent event){
        System.out.println("OK");
        ProjetoFinal.getInstance().gotoCadastraFuncionario();
    }
    
    @FXML
    public void cadastraMesa(ActionEvent event){
        System.out.println("OK");
        ProjetoFinal.getInstance().gotoCadastraMesa();
    }
    
    
    @FXML
    private void cadastraCliente(ActionEvent event) {

        if (ProjetoFinal.getInstance().gotoCadastroCliente()) {
            System.out.println("OK");
        } else {
            System.out.println("Erro");
        }
    }
     
    @FXML
    public void Volta(ActionEvent ae){
        ProjetoFinal.getInstance().gotoCaixa();
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        AtualizaHorario();
        
        //tb_listaPedidos.setEditable(true);
        //System.out.println("A Mesa é: "+CaixaController.getMesa().getCodigo()+ " Sua descricao: "+CaixaController.getMesa().getDescricao());
       //col_produto.setCellValueFactory(new PropertyValueFactory<ItensVenda, String>("quantia"));
        col_produto.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ItensVenda, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(TableColumn.CellDataFeatures<ItensVenda, String> p) {
                return new ReadOnlyObjectWrapper(p.getValue().getProduto().getNome());
            }
        });
        //col_pValor.setCellValueFactory(new PropertyValueFactory<Produtos, String>("preco_venda"));
        col_mesa.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ItensVenda, String>, ObservableValue<String>>() {
            @Override
            public ObservableValue<String> call(TableColumn.CellDataFeatures<ItensVenda, String> p) {
                Mesa mesas = new DaoVenda().getMesas(p.getValue().getCod_Venda());
                return new ReadOnlyObjectWrapper(mesas.getDescricao());
            }
        });
        //col_quantia.setCellValueFactory(new PropertyValueFactory<ItensVenda, String>("quantia"));
        //col_produto.setCellValueFactory(new PropertyValueFactory<ItensVenda, String>("cod_venda"));
        col_quantia.setCellValueFactory(new PropertyValueFactory<ItensVenda, String>("quantia"));
        //col_sValor.setCellValueFactory(new PropertyValueFactory<Produtos, String>("preco_venda"));
        col_horario.setCellValueFactory(new PropertyValueFactory<ItensVenda, String>("horario"));
        tb_listaPedidos.setItems(FXCollections.observableList(new DaoItensVenda().getItensVenda()));
        tb_listaPedidos.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        lb_aberto.setText("Em aberto: "+tb_listaPedidos.getItems().size());  
    }
    
    private void AtualizaHorario() {
        final Relogio r = new Relogio();
        
        relogio = new Thread(){
          @Override 
          public void run() {
              try{
                while(1==1){
                    tx_data.setText("Data: "+r.getData());
                    tx_hora.setText("Horário: "+r.getHora());
                }
              }catch(Exception e){
                  System.out.println("Erro: "+e);
              }
            }
        };
        relogio.start();
      }
}

